home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / lisp / gcl-1.000 / gcl-1 / gcl-1.0 / mp / sparcdivul3.s < prev   
Encoding:
Text File  |  1993-11-29  |  4.2 KB  |  284 lines

  1. #ifdef __svr4__
  2. #define _err err
  3. #define _divul3 divul3
  4. #endif
  5.         .seg "text"
  6.     .global _divul3
  7.  
  8. #define    SS0(label) \
  9.     addx    %o2,%o2,%o2;\
  10.     subcc    %o2,%o1,%o3;\
  11.     bcc    label;\
  12.     addxcc    %o0,%o0,%o0
  13.  
  14. #define    SS1(label) \
  15.     addx    %o3,%o3,%o3;\
  16.     subcc    %o3,%o1,%o2;\
  17.     bcc    label;\
  18.     addxcc    %o0,%o0,%o0
  19. _divul3: mov     %o2,%o4
  20.     ld      [%o2],%o2
  21.     subcc    %o2,%o1,%g0
  22.     blu    1f
  23.     addcc    %o1,%o1,%g0
  24.     mov    0x2f,%o0
  25.     call    _err,1
  26.     nop
  27. 1:    bcc    Lsmalldiv
  28.     andcc    %o1,1,%g0
  29.     be    Levendiv
  30.     srl    %o1,1,%o1
  31.     add    %o1,1,%o1
  32.     subcc    %o2,%o1,%o3
  33.     bcc    Lb01
  34.     addxcc    %o0,%o0,%o0
  35. La01:    SS0(Lb02)
  36. La02:    SS0(Lb03)
  37. La03:    SS0(Lb04)
  38. La04:    SS0(Lb05)
  39. La05:    SS0(Lb06)
  40. La06:    SS0(Lb07)
  41. La07:    SS0(Lb08)
  42. La08:    SS0(Lb09)
  43. La09:    SS0(Lb10)
  44. La10:    SS0(Lb11)
  45. La11:    SS0(Lb12)
  46. La12:    SS0(Lb13)
  47. La13:    SS0(Lb14)
  48. La14:    SS0(Lb15)
  49. La15:    SS0(Lb16)
  50. La16:    SS0(Lb17)
  51. La17:    SS0(Lb18)
  52. La18:    SS0(Lb19)
  53. La19:    SS0(Lb20)
  54. La20:    SS0(Lb21)
  55. La21:    SS0(Lb22)
  56. La22:    SS0(Lb23)
  57. La23:    SS0(Lb24)
  58. La24:    SS0(Lb25)
  59. La25:    SS0(Lb26)
  60. La26:    SS0(Lb27)
  61. La27:    SS0(Lb28)
  62. La28:    SS0(Lb29)
  63. La29:    SS0(Lb30)
  64. La30:    SS0(Lb31)
  65. La31:    SS0(Lb32)
  66. La32:    addx    %o2,%o2,%o2
  67.     xor    %o0,-1,%o0
  68.     add    %o1,%o1,%o1
  69.     sub    %o1,1,%o1
  70.     addcc    %o0,%o2,%o2
  71.     bcc    1f
  72.     subcc    %o2,%o1,%o3
  73.     subcc    %o3,%o1,%o2
  74.     bcs    2f
  75.     add    %o0,1,%o0
  76.     add    %o0,1,%o0
  77. 3:    retl
  78.     st    %o2,[%o4]
  79. 1:    bcs    3b
  80.     nop
  81.     add    %o0,1,%o0
  82. 2:    retl
  83.     st    %o3,[%o4]
  84.  
  85. Lb01:    SS1(La02)
  86. Lb02:    SS1(La03)
  87. Lb03:    SS1(La04)
  88. Lb04:    SS1(La05)
  89. Lb05:    SS1(La06)
  90. Lb06:    SS1(La07)
  91. Lb07:    SS1(La08)
  92. Lb08:    SS1(La09)
  93. Lb09:    SS1(La10)
  94. Lb10:    SS1(La11)
  95. Lb11:    SS1(La12)
  96. Lb12:    SS1(La13)
  97. Lb13:    SS1(La14)
  98. Lb14:    SS1(La15)
  99. Lb15:    SS1(La16)
  100. Lb16:    SS1(La17)
  101. Lb17:    SS1(La18)
  102. Lb18:    SS1(La19)
  103. Lb19:    SS1(La20)
  104. Lb20:    SS1(La21)
  105. Lb21:    SS1(La22)
  106. Lb22:    SS1(La23)
  107. Lb23:    SS1(La24)
  108. Lb24:    SS1(La25)
  109. Lb25:    SS1(La26)
  110. Lb26:    SS1(La27)
  111. Lb27:    SS1(La28)
  112. Lb28:    SS1(La29)
  113. Lb29:    SS1(La30)
  114. Lb30:    SS1(La31)
  115. Lb31:    SS1(La32)
  116. Lb32:    addx    %o3,%o3,%o2
  117.     xor    %o0,-1,%o0
  118.     add    %o1,%o1,%o1
  119.     sub    %o1,1,%o1
  120.     addcc    %o0,%o2,%o2
  121.     bcc    1f
  122.     subcc    %o2,%o1,%o3
  123.     subcc    %o3,%o1,%o2
  124.     bcs    2f
  125.     add    %o0,1,%o0
  126.     add    %o0,1,%o0
  127. 3:    retl
  128.     st    %o2,[%o4]
  129. 1:    bcs    3b
  130.     nop
  131.     add    %o0,1,%o0
  132. 2:    retl
  133.     st    %o3,[%o4]
  134.  
  135. Lsmalldiv:
  136.     addcc    %o0,%o0,%o0
  137. Lc00:    SS0(Ld01)
  138. Lc01:    SS0(Ld02)
  139. Lc02:    SS0(Ld03)
  140. Lc03:    SS0(Ld04)
  141. Lc04:    SS0(Ld05)
  142. Lc05:    SS0(Ld06)
  143. Lc06:    SS0(Ld07)
  144. Lc07:    SS0(Ld08)
  145. Lc08:    SS0(Ld09)
  146. Lc09:    SS0(Ld10)
  147. Lc10:    SS0(Ld11)
  148. Lc11:    SS0(Ld12)
  149. Lc12:    SS0(Ld13)
  150. Lc13:    SS0(Ld14)
  151. Lc14:    SS0(Ld15)
  152. Lc15:    SS0(Ld16)
  153. Lc16:    SS0(Ld17)
  154. Lc17:    SS0(Ld18)
  155. Lc18:    SS0(Ld19)
  156. Lc19:    SS0(Ld20)
  157. Lc20:    SS0(Ld21)
  158. Lc21:    SS0(Ld22)
  159. Lc22:    SS0(Ld23)
  160. Lc23:    SS0(Ld24)
  161. Lc24:    SS0(Ld25)
  162. Lc25:    SS0(Ld26)
  163. Lc26:    SS0(Ld27)
  164. Lc27:    SS0(Ld28)
  165. Lc28:    SS0(Ld29)
  166. Lc29:    SS0(Ld30)
  167. Lc30:    SS0(Ld31)
  168. Lc31:    SS0(Ld32)
  169. Lc32:    xor    %o0,-1,%o0
  170.     retl
  171.     st    %o2,[%o4]
  172.  
  173. Ld01:    SS1(Lc02)
  174. Ld02:    SS1(Lc03)
  175. Ld03:    SS1(Lc04)
  176. Ld04:    SS1(Lc05)
  177. Ld05:    SS1(Lc06)
  178. Ld06:    SS1(Lc07)
  179. Ld07:    SS1(Lc08)
  180. Ld08:    SS1(Lc09)
  181. Ld09:    SS1(Lc10)
  182. Ld10:    SS1(Lc11)
  183. Ld11:    SS1(Lc12)
  184. Ld12:    SS1(Lc13)
  185. Ld13:    SS1(Lc14)
  186. Ld14:    SS1(Lc15)
  187. Ld15:    SS1(Lc16)
  188. Ld16:    SS1(Lc17)
  189. Ld17:    SS1(Lc18)
  190. Ld18:    SS1(Lc19)
  191. Ld19:    SS1(Lc20)
  192. Ld20:    SS1(Lc21)
  193. Ld21:    SS1(Lc22)
  194. Ld22:    SS1(Lc23)
  195. Ld23:    SS1(Lc24)
  196. Ld24:    SS1(Lc25)
  197. Ld25:    SS1(Lc26)
  198. Ld26:    SS1(Lc27)
  199. Ld27:    SS1(Lc28)
  200. Ld28:    SS1(Lc29)
  201. Ld29:    SS1(Lc30)
  202. Ld30:    SS1(Lc31)
  203. Ld31:    SS1(Lc32)
  204. Ld32:    xor    %o0,-1,%o0
  205.     retl
  206.     st    %o3,[%o4]
  207.  
  208.  
  209. Levendiv:
  210.     subcc    %o2,%o1,%o3
  211.     bcc    Lf01
  212.     addxcc    %o0,%o0,%o0
  213. Le01:    SS0(Lf02)
  214. Le02:    SS0(Lf03)
  215. Le03:    SS0(Lf04)
  216. Le04:    SS0(Lf05)
  217. Le05:    SS0(Lf06)
  218. Le06:    SS0(Lf07)
  219. Le07:    SS0(Lf08)
  220. Le08:    SS0(Lf09)
  221. Le09:    SS0(Lf10)
  222. Le10:    SS0(Lf11)
  223. Le11:    SS0(Lf12)
  224. Le12:    SS0(Lf13)
  225. Le13:    SS0(Lf14)
  226. Le14:    SS0(Lf15)
  227. Le15:    SS0(Lf16)
  228. Le16:    SS0(Lf17)
  229. Le17:    SS0(Lf18)
  230. Le18:    SS0(Lf19)
  231. Le19:    SS0(Lf20)
  232. Le20:    SS0(Lf21)
  233. Le21:    SS0(Lf22)
  234. Le22:    SS0(Lf23)
  235. Le23:    SS0(Lf24)
  236. Le24:    SS0(Lf25)
  237. Le25:    SS0(Lf26)
  238. Le26:    SS0(Lf27)
  239. Le27:    SS0(Lf28)
  240. Le28:    SS0(Lf29)
  241. Le29:    SS0(Lf30)
  242. Le30:    SS0(Lf31)
  243. Le31:    SS0(Lf32)
  244. Le32:    addx    %o2,%o2,%o2
  245.     xor    %o0,-1,%o0
  246.     retl
  247.     st    %o2,[%o4]
  248.  
  249. Lf01:    SS1(Le02)
  250. Lf02:    SS1(Le03)
  251. Lf03:    SS1(Le04)
  252. Lf04:    SS1(Le05)
  253. Lf05:    SS1(Le06)
  254. Lf06:    SS1(Le07)
  255. Lf07:    SS1(Le08)
  256. Lf08:    SS1(Le09)
  257. Lf09:    SS1(Le10)
  258. Lf10:    SS1(Le11)
  259. Lf11:    SS1(Le12)
  260. Lf12:    SS1(Le13)
  261. Lf13:    SS1(Le14)
  262. Lf14:    SS1(Le15)
  263. Lf15:    SS1(Le16)
  264. Lf16:    SS1(Le17)
  265. Lf17:    SS1(Le18)
  266. Lf18:    SS1(Le19)
  267. Lf19:    SS1(Le20)
  268. Lf20:    SS1(Le21)
  269. Lf21:    SS1(Le22)
  270. Lf22:    SS1(Le23)
  271. Lf23:    SS1(Le24)
  272. Lf24:    SS1(Le25)
  273. Lf25:    SS1(Le26)
  274. Lf26:    SS1(Le27)
  275. Lf27:    SS1(Le28)
  276. Lf28:    SS1(Le29)
  277. Lf29:    SS1(Le30)
  278. Lf30:    SS1(Le31)
  279. Lf31:    SS1(Le32)
  280. Lf32:    addx    %o3,%o3,%o3
  281.     xor    %o0,-1,%o0
  282.     retl
  283.     st    %o3,[%o4]
  284.